package com.sg.dto.biz.bff.common;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc BffWorkContTrendsMsgDto
 * @使用场景
 */
@Data
public class BffWorkContTrendsMsgDto implements Serializable {

    /**
     * 消息ID
     */
    @ApiModelProperty("消息ID")
    private String messageId;

    /**
     * 消息标题
     */
    @ApiModelProperty("消息标题")
    private String messageTitle;

    /**
     * 消息内容
     */
    @ApiModelProperty("消息内容")
    private String messageContent;

    /**
     * 归属内容ID
     */
    @ApiModelProperty("归属内容ID")
    private String entityId;

    /**
     * 归属内容名称
     */
    @ApiModelProperty("归属内容名称")
    private String surfaceContName;

    /**
     * 媒介类型 QUESTIONABILITY:待解决 RESOLVED:已解决 REJECTED:已拒绝 SUSPENDED:已挂起 CLOSED:已关闭
     */
    @ApiModelProperty("媒介类型")
    private String mediaType;

    /**
     * 媒介地址
     */
    @ApiModelProperty("媒介地址")
    private String mediaAddress;

    /**
     * 是否已处理 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否已处理")
    private String isHandle;

    /**
     * 虚拟组织成员就职记录ID
     */
    @ApiModelProperty("虚拟组织成员就职记录ID")
    private String virtualOrgInductionRecordId;

    /**
     * 发送方账号ID
     */
    @ApiModelProperty("发送方账号ID")
    private String senderUserId;

    /**
     * 发送方头像地址
     */
    @ApiModelProperty("发送方头像地址")
    private String senderProfilePictureAddress;

    /**
     * 发送方姓名
     */
    @ApiModelProperty("发送方姓名")
    private String nameOfSender;

    /**
     * 组内职务名称
     */
    @ApiModelProperty("组内职务名称")
    private String virtualOrganizationPosition;

    /**
     * 冗余部门名称
     */
    @ApiModelProperty("冗余部门名称")
    private String deptShortName;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 进度值（数值）
     */
    @ApiModelProperty("进度值（数值）")
    private Double progressValue;

    /**
     * 进度值单位
     */
    @ApiModelProperty("进度值单位")
    private String progressValueUnit;

    /**
     * 进度较上次变化值
     */
    @ApiModelProperty("进度较上次变化值")
    private Double fromLastProgressValue;

    /**
     * 进度较上次变化值单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份 %:%
     */
    @ApiModelProperty("进度较上次变化值单位")
    private String fromLastProgressValueUnit;

    /**
     * 进度较上次增降幅
     */
    @ApiModelProperty("进度较上次增降幅")
    private Double progressFromLastRatio;

    /**
     * 进度较上次增降幅单位 TIMES:次 DOOR:门 PART:部 SET:套 INDIVIDUAL:个 YUAN:元 NNT:人 PIECE:篇 TERM:项 FEN:分 WAN_YUAN:万元 PERCENT:百分率 PORTION:份 %:%
     */
    @ApiModelProperty("进度较上次增降幅单位")
    private String progressFromLastRatioUnit;
    /**
     * 消息访问链接
     */
    @ApiModelProperty("消息访问链接")
    private String messageContentUrl;

    /**
     * 行为类型编码
     */
    @ApiModelProperty("行为类型编码")
    private String behaviorTypeCode;

    /**
     * 归属内容类型编码 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表 OMS_NOTICE:通知公告表 OMS_CYCLE:周期表 OMS_EVALUATION_SUBJECT:评价主题表 OMS_BIZ_APP_BATCH:业务应用批次表 OMS_EVA_BATCH_RELATED_SET:评价模板批次相关设置表 OMS_TARGET_CYCLE_PLAN_SET:目标周期规划设置表 OMS_TARGET_OBJECTIVE_PLAN_EXTEND:指标扩展规划设置表 OMS_MESSAGE_CHANNEL:通道表 OMS_ORG_ORGANIZATION:组织表 OMS_PROJECT:项目表 OMS_ORG_DEPT:部门表 OMS_QUESTION:问题表 OMS_OFFICIAL_DOCUMENT:公文表
     */
    @ApiModelProperty("归属内容类型编码")
    private String surfaceCode;

    /**
     * 协同内容类型编码 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表 OMS_NOTICE:通知公告表 OMS_CYCLE:周期表 OMS_EVALUATION_SUBJECT:评价主题表 OMS_BIZ_APP_BATCH:业务应用批次表 OMS_EVA_BATCH_RELATED_SET:评价模板批次相关设置表 OMS_TARGET_CYCLE_PLAN_SET:目标周期规划设置表 OMS_TARGET_OBJECTIVE_PLAN_EXTEND:指标扩展规划设置表 OMS_MESSAGE_CHANNEL:通道表 OMS_ORG_ORGANIZATION:组织表 OMS_PROJECT:项目表 OMS_ORG_DEPT:部门表 OMS_QUESTION:问题表 OMS_OFFICIAL_DOCUMENT:公文表
     */
    @ApiModelProperty("协同内容类型编码")
    private String cooperateContentTypeCode;

    /**
     * 协同内容ID
     */
    @ApiModelProperty("协同内容ID")
    private String cooperateContentId;

    /**
     * 发送方身份人员ID
     */
    @ApiModelProperty("发送方身份人员ID")
    private String senderOriginalRoleMemberId;
    /**
     * 发送方虚拟组织成员ID
     */
    @ApiModelProperty("发送方虚拟组织成员ID")
    private String senderVirtualOrgMemberId;

    /**
     * 发送方就职记录ID
     */
    @ApiModelProperty("发送方就职记录ID")
    private String senderInductionRecordId;

    /**
     * 就职部门ID
     */
    @ApiModelProperty("就职部门ID")
    private String deptId;
    /**
     * 消息模板标识
     */
    @ApiModelProperty("消息模板标识")
    private String messageTemplateCode;
    /**
     * 主题内容类型编码 ORG_OR_DEPT:组织或部门 INTELLIGENT_HARDWARE_EQUIPMENT:智能硬件设备 OMS_TARGET_CYCLE:目标周期表 OMS_EVALUATION_OBJECT_TARGET_CYCLE:被评对象目标周期表 OMS_TARGET:目标表 OMS_TARGET_CATEGORY:目标分类表 OMS_TARGET_OBJECTIVE:指标表 OMS_TASK:任务表 OMS_ORG_INDUCTION_RECORD:就职记录表 OMS_FRAMEWORK_ORIGINAL_ROLE_MEMBER:身份人员表 OMS_ORG_DEPT:部门表 OMS_BASE_HOST:宿主表 OMS_FRAMEWORK_SPACE:空间表 OMS_TSPE_CYCLE_STAGE_DATA:周期阶段资料记录 OMS_EVALUATION_TEMPLATE:评价模板 OMS_EVALUATION_PORTRAIT:评价画像表 OMS_ORG_POSITION:职务表 OMS_VIRTUAL_ORG_MEMBER:虚拟组织成员表 OMS_PLANNING:规划资料表 OMS_FRAMEWORK_USERS:个人账号表 OMS_EXECUTE_CYCLE_STAGE:执行周期阶段表 OMS_CONF_SCHEME:配置方案表 OMS_EVA_OBJ_TARGET_CYCLE_OSET:被评对象目标周期目标设置表 OMS_EVA_OBJ_TARGET_CYCLE_WEIGHT_SET:被评对象目标周期权重设置表 OMS_NOTICE:通知公告表 OMS_CYCLE:周期表 OMS_EVALUATION_SUBJECT:评价主题表 OMS_BIZ_APP_BATCH:业务应用批次表 OMS_EVA_BATCH_RELATED_SET:评价模板批次相关设置表 OMS_TARGET_CYCLE_PLAN_SET:目标周期规划设置表 OMS_TARGET_OBJECTIVE_PLAN_EXTEND:指标扩展规划设置表 OMS_MESSAGE_CHANNEL:通道表 OMS_ORG_ORGANIZATION:组织表 OMS_PROJECT:项目表 OMS_ORG_DEPT:部门表 OMS_QUESTION:问题表 OMS_OFFICIAL_DOCUMENT:公文表
     */
    @ApiModelProperty("主题内容类型编码")
    private String themeContentTypeCode;

    /**
     * 主题内容ID
     */
    @ApiModelProperty("主题内容ID")
    private String themeContentId;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 处理类型 NO_NEED_HANDLING:不需要处理 NEED_HANDLING:需要处理 NEED_BUSINESS_OPERATION_HANDLING:需要业务操作处理
     */
    @ApiModelProperty("处理类型")
    private String handleType;
    /**
     * 引用的消息ID
     */
    @ApiModelProperty("引用的消息ID")
    private String referenceMessageId;

    /**
     * 引用的消息内容
     */
    @ApiModelProperty("引用的消息内容")
    private String referenceMessageContent;
    /**
     * 是否精品 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否精品")
    private String isBoutique;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffWorkContTrendsMsgDto that = (BffWorkContTrendsMsgDto) o;
        return messageId == that.messageId && messageTitle == that.messageTitle && messageContent == that.messageContent && entityId == that.entityId && surfaceContName == that.surfaceContName && mediaType == that.mediaType && mediaAddress == that.mediaAddress && isHandle == that.isHandle && virtualOrgInductionRecordId == that.virtualOrgInductionRecordId && senderUserId == that.senderUserId && senderProfilePictureAddress == that.senderProfilePictureAddress && nameOfSender == that.nameOfSender && virtualOrganizationPosition == that.virtualOrganizationPosition && deptShortName == that.deptShortName && createTime == that.createTime && progressValue == that.progressValue && progressValueUnit == that.progressValueUnit && fromLastProgressValue == that.fromLastProgressValue && fromLastProgressValueUnit == that.fromLastProgressValueUnit && progressFromLastRatio == that.progressFromLastRatio && progressFromLastRatioUnit == that.progressFromLastRatioUnit && messageContentUrl == that.messageContentUrl && behaviorTypeCode == that.behaviorTypeCode && surfaceCode == that.surfaceCode && cooperateContentTypeCode == that.cooperateContentTypeCode && cooperateContentId == that.cooperateContentId && senderOriginalRoleMemberId == that.senderOriginalRoleMemberId && senderVirtualOrgMemberId == that.senderVirtualOrgMemberId && senderInductionRecordId == that.senderInductionRecordId && deptId == that.deptId && messageTemplateCode == that.messageTemplateCode && themeContentTypeCode == that.themeContentTypeCode && themeContentId == that.themeContentId && operateTime == that.operateTime && handleType == that.handleType && referenceMessageId == that.referenceMessageId && referenceMessageContent == that.referenceMessageContent && isBoutique == that.isBoutique;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), messageId, messageTitle, messageContent, entityId, surfaceContName, mediaType, mediaAddress, isHandle, virtualOrgInductionRecordId, senderUserId, senderProfilePictureAddress, nameOfSender, virtualOrganizationPosition, deptShortName, createTime, progressValue, progressValueUnit, fromLastProgressValue, fromLastProgressValueUnit, progressFromLastRatio, progressFromLastRatioUnit, messageContentUrl, behaviorTypeCode, surfaceCode, cooperateContentTypeCode, cooperateContentId, senderOriginalRoleMemberId, senderVirtualOrgMemberId, senderInductionRecordId, deptId, messageTemplateCode, themeContentTypeCode, themeContentId, operateTime, handleType, referenceMessageId, referenceMessageContent, isBoutique);
    }

}
